HEVC (High Efficiency Video Coding) is an advanced video coding system being developed under the Joint Collaborative Team on Video Coding (JCT-VC) group of video coding experts from ITU-T Study Group. In HEVC, a 2N×2N coding unit (CU) can be hierarchically partitioned into a partition size selected from 2N×2N, 2N×N, N×2N and N×N. The current HEVC also defines the prediction unit (PU), where a CU may consist of one or multiple PUs. There are various types (or partition types) regarding how a CU is partitioned into PUs. For example, an Intra 2N×2N CU may consist of one 2N×2N PU if it is greater than the smallest coding unit (SCU); or it may consist of either one 2N×2N PU or four N×N PUs if it is an SCU. An Inter 2N×2N CU may consist of one 2N×2N PU, two rectangular PUs (e.g. 2N×N or N×2N), or four N×N PUs if it is an SCU. FIG. 1A illustrates possible symmetrical partitions for an inter 2N×2N CU according to HEVC. When a 2N×2N CU is partitioned into two rectangular PUs, asymmetrical partitions may also be used. FIG. 1B illustrates asymmetrical partitions, 2N×nU, 2N×nD, nL×2N, and nR×2N that are allowed for HEVC. In HEVC, an Inter coded slice may be coded in P mode or B mode, where a slice is a picture region typically consisting of one or more rows of LCUs (Largest CUs). Furthermore, in HEVC, a list of reference pictures is used for uni-prediction of a P or B slice. For the coding process of a P slice, there is one reference picture list (list 0 or list 1). For the coding process of a B slice, there are two reference picture lists (list 0 and list 1). In HEVC Working Draft 4 (HEVC WD4) (WD4: Working Draft 4 of High-Efficiency Video Coding, Bross, et. al., JCTVC-F803, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T VCEG and ISO/IEC MPEG, Torino, Italy, July 2011), the prediction mode and partition mode binarization are defined as shown in Table 1. For a P slice, the CUs in the slice usually are processed according to P mode. Likewise, for a B slice, the PUs in the slice usually are processed according to B mode. Nevertheless, the PU in a P or B slice may also be processed according to I mode. Accordingly, Intra coding mode for P and B slices are also included in Table 1. In the case that Intra mode is not allowed for PUs in a P or B slice, all PUs in the P or B slice will only use MODE_INTER.
TABLE 1Bin stringcLog2CUSize = = Log2MinCUSizecLog2CUSize >cLog2CUSize = = 3 &&cLog2CUSize > 3 | |SliceValue ofLog2MinCUSize!inter_4x4_enabled_flaginter_4x4_enabled_flagtypepred_typePredModePartMode(Condition 1)(Condition 2)(Condition 3)I0MODE_INTRAPART_2Nx2N—111MODE_INTRAPART_NxN—00P0MODE_INTERPART_2Nx2N0 10 10 11MODE_INTERPART_2NxN0 0110 010 012MODE_INTERPART_Nx2N0 0010 000 0014MODE_INTERPART_2NxnU0 0100——5MODE_INTERPART_2NxnD0 0101——6MODE_INTERPART_nLx2N0 0000——7MODE_INTERPART_nRx2N0 0001——3MODE_INTERPART_NxN——0 0008MODE_INTRAPART_2Nx2N111119MODE_INTRAPART_NxN—1010B0MODE_INTERPART_2Nx2N1111MODE_INTERPART_2NxN01101012MODE_INTERPART_Nx2N0010010014MODE_INTERPART_2NxnU0100——5MODE_INTERPART_2NxnD0101——6MODE_INTERPART_nLx2N0000——7MODE_INTERPART_nRx2N0001——3MODE_INTERPART_NxN——00018MODE_INTRAPART_2Nx2N000000 00000 09MODE_INTRAPART_NxN—000 10000 1
In Table 1, the value of pred_type (specifying a prediction type) is used to designate an allowed PredMode (specifying a prediction mode) and PartMode (specifying a partition mode) combination. For example, there are two possible values, 0 and 1, for an I slice and there are 10 possible values, 0 through 9, for a P or B slice. Syntax element inter_4×4 enabled_flag specifies whether inter prediction can be applied to blocks having the size of 4×4 luma samples. Variable cLog2CUSize specifies the current CU size and Log2MinCUSize specifies the minimum coding block size. As shown in Table 1, code tables or bin string tables are different for P slice and B slice for each of three coding conditions. The three coding conditions correspond to (1) the case that cLog2CUSize>Log2MinCUSize, (2) the case that cLog2CUSize==Log2MinCUSize and cLog2CUSize==3 && !inter_4×4 enabled_flag, and (3) the case that cLog2CUSize==Log2MinCUSize and cLog2CUSize>3∥inter_4×4 enabled_flag. For each coding condition, three code tables are used for I, P and B slices respectively. Accordingly, three sets of code tables or bin string tables are used for three coding conditions in Table 1. In HEVC, the N×N PU is not allowed when “cLog2CUSize>Log2MinCUSize”. In other words, only 2N×2N PU is allowed for I slice and there is no need to code this prediction and partition mode combination. Therefore, there are no code entries in this case (as indicated by “-” in Table 1) for the I slice. Similarly, the PART_2N×nU, PART_2N×nD, PART_2N×nL, and PART_2N×nR are not allowed when “cLog2CUSize==Log2MinCUSize”. Accordingly, there are no code entries in this case (as indicated by “-” in Table 1) for P and B slices. Furthermore, when “cLog2CUSize==Log2MinCUSize” and “cLog2CUSize==3 && !inter_4×4 enabled_flag”, Inter N×N is not allowed for P and B slices. Accordingly, there is no need to include code entries for these cases in Table 1.
According to HEVC WD 4, coding units in a P slice use different mode syntax coding (binarization) from coding units in a B slice. As shown in Table 1, for each coding condition, individual sets of codes are used for CUs in I, P and B slices respectively as indicated by thick-lined boxes. The set of codes for a P slice is different from the set of codes for a B slice. Furthermore, in HEVC WD4, the Intra mode has the highest priority (i.e., “1”, shortest codeword in Table 1) for PUs in the P slice, while the INTER_2N×2N has the highest priority for the B-coded PU than the P-coded PU. The use of separate syntax coding tables for P and B slices may increase system complexity. Therefore it is desirable to develop a scheme to allow unified syntax coding table for P and B slices to share.